package es.juanc.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		//String mail = "adfasd@sdfs";		
		//System.out.println( mail.matches( "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$") );
		
		String version = "v05";
		// PRE
		System.out.println( version.matches( "^(\\d{0,4}(\\.\\d{0,4})*|\\d{0,4}\\/\\d{0,4}|V(\\d{1,4})(R(\\d{0,4}))?(SP(\\d{0,4}))?(F(\\d{0,4}))?)$" ) );
		// 3
		System.out.println( version.matches( "^(\\d{1,4}(\\.\\d{1,4})*|\\d{1,4}(\\/\\d{1,4})*|V(\\d{1,4})(R(\\d{0,4}))?(SP(\\d{0,4}))?(F(\\d{0,4}))?)$" ) );
	
		// ------------------------------------------------------------------------------------------		
		
		String tfilter = "*ba";
		String nombre = "isban pruebas";

		a(tfilter, nombre);

		b(null, nombre);
		b("", nombre);
		b(" ", nombre);
		b("*", nombre);
		b("isb*", nombre);
		b("*prue*", nombre);
		b("*pruebas", nombre);
		b("*prue", nombre);

		b("$%&!&%·#!|@$$%&()=?", nombre);

		// System.out.println( !"*".equals( null ) + " " + !"*".equals( "*" ) +
		// " " + !"*".equals( " " ) );
	}

	private static void a(String tfilter, String nombre) {

		System.out.println("* A:");

		Pattern patron = null;
		Matcher valida = null;

		if (tfilter != null && !tfilter.equals("*")) {
			String filtro = tfilter.replace("*", ".*");
			filtro = filtro.toUpperCase();
			patron = Pattern.compile(filtro);
			valida = patron.matcher(nombre.toUpperCase());
		}

		if (patron != null) {
			if (valida.matches()) {
				System.out.println("\tAñado '" + nombre + "' a la lista");
			} else {
				System.out.println("\tNO añado '" + nombre + "' a la lista");
			}
		} else {
			System.out.println("\tAñado '" + nombre + "' a la lista");
		}
	}

	private static void aa(String tfilter, String nombre) {

		System.out.println("* AA:");

		if ( tfilter != null && !tfilter.equals("*") ) {
			String filtro = tfilter.replace("*", ".*");
			filtro = filtro.toUpperCase();
			Pattern patron = Pattern.compile(filtro);
			Matcher valida = patron.matcher(nombre.toUpperCase());
			if ( valida.matches() ) {
				System.out.println("\tAñado '" + nombre + "' a la lista");
			} else {
				System.out.println("\tNO añado '" + nombre + "' a la lista");
			}
		} else {
			System.out.println("\tAñado '" + nombre + "' a la lista");
		}
	}

	private static void b(String tfilter, String nombre) {

		System.out.println("* B '" + nombre + "' " + tfilter );

		if (tfilter != null && !tfilter.equals("*")) {
			if (nombre.matches(tfilter.replace("*", ".*"))) {
				System.out.println("\tAñado '" + nombre + "' a la lista");
			} else {
				System.out.println("\tNO añado '" + nombre + "' a la lista");
			}
		} else {
			System.out.println("\tAñado '" + nombre + "' a la lista");
		}

		if ( tfilter == null || "*".equals(tfilter) ||
				( tfilter != null && nombre.matches( tfilter.replace("*", ".*") ) ) ) {
			System.out.println("\tAñado '" + nombre + "' a la lista");
		} else {
			System.out.println("\tNO añado '" + nombre + "' a la lista");
		}

		// Y el RGWPattern ... ??
	}
}